鐵人賽第四天!簡單整理下昨日分享的輸入方法有兩種:
直接輸入:直接把值本身當成輸入。
間接輸入:透過多種輸入來傳遞消息,取得回傳值,而回傳值內容才是我們要的。
延續昨日的主題,
我整理了兩點 『 優雅的 Ruby 』裡比較觀念上的想法進行提出分享。
ENV, 是 Ruby 中的環境變數 。
舉例來說,寫一個方法:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=
# 1-6
def format_time
format = ENV.fetch('TIME_FORMAT'){ '%Q%r' }
Time.now.strftime(format)
end
format_time # "2021-09-09T01:33:23 AM"
# =-=-=-=-=-=-=-=-=-=-=-=-=-=
# 8-9
ENV['TIME_FORMAT'] = '%FT%T%:z'
format_time # "2021-09-09T01:33:23 - 04:00"
這裡 1-6行裡的 TIME_FORMAT 本身就是應用在每個記錄行的時間戳格式。
我們把它當成 常數 輸入於格式方法中,再輸出當前時間。
這是屬於一種 『 外部的輸入 』。
然而,轉到第 8-9 行,
原本應 ENV 格式化輸出的,也因為受到外部環境變數影響( TIME_FORMAT )成了間接輸入。
因此當程式碼的關聯性程式碼關聯性的互動越多,一但環境改變,方法也會跟著改變,
因此這不一定是好事。
間接輸入的優化方式,在這法則上的應用的確是不錯的解法。
這比喻一個對象應當對其他對象盡可能地少了解,並且不和陌生人說話。
不要以為它孤僻,
就拿正在進行的專案開發來說,
在功能開發的分配內容裡,越明確且關聯條件的重複率越低,效率是越高。
因為同時你也創造了在第三人快速取用你的開發功能時,能確保一目瞭然且無需交談,自然也省去了很多交流時間。
此外,在 Ruby 世界中這第三人的動作,也能模擬成是『封裝』。
(而所謂封裝的定義就留給大家查詢吧~畢竟我們把重心放在方法上。)
連續兩天的收集輸入為基礎概念分享後,
今天暫以短篇分享做為『 收集收入的方法-- 間接輸入 』來結尾吧。
明天將開始正式進入『 收集收入 』的應用練習題!
好好的摩拳擦掌!一起朝資優生筆記!
關關難!關關過!
註:
(%Q %r ,是ruby中一種轉譯符號的用法,也有更精簡的縮寫概念。
欲深入了解~可參考手冊API。)